#ifndef __OLORIN_OBJECT__
#define __OLORIN_OBJECT__

#include <DLL.hpp>
#include <Vector3.hpp>
#include <Quaternion.hpp>

using namespace Olorin::Framework;

namespace Olorin
{
	class DLLAPI Object
	//class Object
	{
	private:
		Vector3 position;
		Quaternion rotation;
	public:
		Object();
		Object(const Vector3& position, const Quaternion& rotation);

		void setPosition(const Vector3& position);
		void setRotation(const Quaternion& rotation);

		const Vector3& getPosition() const;
		const Quaternion& getRotation() const;
		
		virtual void rotateX(const float& angle);
		virtual void rotateY(const float& angle);
		virtual void rotateZ(const float& angle);
		virtual void rotateAxisAngle(const Vector3& axis, const float& angle);
		virtual void rotateQuaternion(const Quaternion& rotation);
	};
}

#endif